import * as THREE from 'three'

// 获取射线直线和所有模型相交的数组集合
function GetIntersects(event, context) {
  // 获取dom元素到窗口左上角的偏移量
  var left = context.container.getBoundingClientRect().left
  var top = context.container.getBoundingClientRect().top
  //  声明射线和mouse变量
  var raycaster = new THREE.Raycaster()
  var mouse = new THREE.Vector2()
  //  通过鼠标点击的位置计算出射线所需要的点的位置，以屏幕中心为原点，值的范围为-1到1.
  //  场景不是占用全部屏幕所以需要用鼠标点击坐标减去容器到窗口左上角的偏移量
  mouse.x = ((event.clientX - left) / context.containerWidth) * 2 - 1
  mouse.y = -((event.clientY - top) / context.containerHeight) * 2 + 1
  //  根据在屏幕的二维位置以及相机的矩阵更新射线的位置
  raycaster.setFromCamera(mouse, context.camera)
  // 获取射线直线和所有模型相交的数组集合
  var intersects = raycaster.intersectObjects(context.scene.children, true) //  增加第二个参数，可以遍历子子孙孙对象
  return intersects
}
export { GetIntersects }
